package org.lonetree.tc.webapp.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.lonetree.tc.core.User.EmailAddress;
import org.lonetree.tc.core.User;
import org.lonetree.tc.core.User.Username;
import org.lonetree.tc.core.dao.DAOFactory;
import org.lonetree.tc.core.dao.UserDAO;
import org.lonetree.tc.webapp.forms.UserForm;

public class UpdateUser extends AdminAction {

	@Override
	protected ActionForward executeAdmin(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception{

		UserForm uuf = (UserForm)form;
		Username uid = new Username (uuf.getUsername());
		DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.FactoryImplementation.DB_DAO_FACTORY);
		UserDAO udao = factory.getUserDAO();
		User user = udao.getUser(uid);
		
		user.setFirstName(uuf.getFirstName());
		user.setLastName(uuf.getLastName());
		user.setAdmin(uuf.isAdmin());
		user.setPassword(uuf.getPassword());
		user.setLocation(uuf.getLocation());
		String emailstr = uuf.getEmail();
		EmailAddress emailAddress = new EmailAddress(emailstr);
		if(emailstr != null)
			user.setEmailAddress(emailAddress);
		
		udao.updateUser(user);
		
		return mapping.findForward("success");
	}
}
